package com.yanqu.road.server.manager.douluodalu.impl;

import com.yanqu.road.entity.activity.douluodalu.DouLuoDaLuUserEvent;
import com.yanqu.road.entity.activity.douluodalu.config.DouLuoDaLuEventInfo;
import com.yanqu.road.server.manager.douluodalu.CrossDouLuoDaLuContext;
import com.yanqu.road.server.manager.douluodalu.DouLuoDaLuEventResult;
import com.yanqu.road.server.manager.douluodalu.DouLuoEventHandleResult;
import com.yanqu.road.server.manager.douluodalu.IDouLuoDaLuUserEventAction;

import java.util.Map;

/**
 * 魂兽宝箱事件
 */
public class DouLuoDaLuMonsterBoxEventAction extends DouLuoDaLuBaseEventAction implements IDouLuoDaLuUserEventAction {

    public DouLuoDaLuMonsterBoxEventAction(CrossDouLuoDaLuContext context, DouLuoDaLuEventInfo eventInfo) {
        super(context, eventInfo);
    }

    @Override
    DouLuoDaLuEventResult init0() {
        DouLuoDaLuEventResult eventResult = new DouLuoDaLuEventResult();
        DouLuoDaLuUserEvent event = newDouLuoDaLuUserEvent();
        context.getUserData().setEvent(event);

        eventResult.setEventId(eventInfo.getEventId());
        eventResult.setUserEvent(event);
        return eventResult;
    }

    @Override
    DouLuoEventHandleResult handle0(int action, byte[] params) {
        DouLuoEventHandleResult handleResult = new DouLuoEventHandleResult();
        //开宝箱在区服处理(另一个协议)
        handleResult.setUserEvent(context.getUserData().getEvent());

        //此处是宝箱发放
        //handleResult.setRewards(eventInfo.getRewards());
        // 获取宝箱的数量 = 当前区域的体力消耗，此处修改的是展示
        int num = context.getActivity().getConfig().getRegionInfo(context.getUserData().getRegionId()).getEnergy();
        handleResult.setRewards(eventInfo.getTargetId() + "=" + num);
        handleResult.setEventId(eventInfo.getEventId());

        handleScore(handleResult);

//        List<Integer> itemNum = StringUtils.stringToIntegerList(eventInfo.getRewards(), "=");
        Map<Integer, Integer> boxMap = context.getUserData().getBoxMap();
//        int itemId = itemNum.get(0);
//        int num = itemNum.get(1);
        int itemId = Integer.parseInt(eventInfo.getTargetId());
        // 获取宝箱的数量 = 当前区域的体力消耗，此处修改的是数据库数据
        if(boxMap.containsKey(itemId)){
            boxMap.put(itemId, num + boxMap.get(itemId));
        }else {
            boxMap.put(itemId, num);
        }

        context.getUserData().setEvent(new DouLuoDaLuUserEvent());
        return handleResult;
    }
}
